package com.getan.boot.common.utils.token;

import com.getan.boot.common.utils.CollectionUtils;
import com.getan.boot.common.utils.StringPool;
import lombok.RequiredArgsConstructor;

import java.util.Map;

/**
 * 使用 Map 对占位符进行替换
 *
 * @author Bruce.Gong
 * @since 1.0.0-SNAPSHOT
 */
@RequiredArgsConstructor
public class MapTokenHandler implements TokenHandler {

    private final Map<String, String> map;

    @Override
    public String handleToken(String content) {
        if (CollectionUtils.isNotEmpty(map)) {
            String key = content;
            int separatorIndex = content.indexOf(StringPool.COLON);
            String defaultValue = null;
            if (separatorIndex >= 0) {
                key = content.substring(0, separatorIndex);
                defaultValue = content.substring(separatorIndex + 1);
            }
            if (defaultValue != null) {
                return map.getOrDefault(key, defaultValue);
            }
            if (map.containsKey(key)) {
                return map.get(key);
            }
        }
        return StringPool.EMPTY;
    }

}
